home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 11
/
FM Towns Free Software Collection 11.iso
/
t_os
/
tool
/
artemis1
/
usrlib
/
usrlib.txt
< prev
Wrap
Text File
|
1992-09-17
|
6KB
|
161 lines
私製グラフィックライブラリ RIOLIB
===========================================================================
序.
===========================================================================
High C のグラフィックライブラリは、僕にとっては「遅い」「使いにくい」「マ
ニュアルがヘボい」の3拍子そろった、たいへん困ったものでした。
たしかにこのライブラリは、グラフィックを一般的に利用するための機能は非常に
充実しています。しかし、僕が TOWNS のグラフィックを使う用途と言えば、
・ゲームづくり(それも、アクションゲーム)
・お絵描き(または、グラフィックツールづくり)
の2つしかないのです。High C のグラフィックライブラリは、この2つの点からは、
かなり使いにくくできているように思います。すくなくとも、今まで MSX2 の明解な
グラフィック操作体系に慣れてきた僕にとって、このライブラリは「まわりくどい」
の一言につきます。
というわけで、MSX-C のグラフィックライブラリに似せて、自分流にライブラリを
作ってみました。モットーは「身軽、気軽、手軽」。日頃「もっとラクにグラフィッ
クが扱えないものか」と感じておられる方は、ぜひ一度お試しください。
P.S. このライブラリは、グラフィック関数のほかに、キーボードやマウスの操作
関数も含みます。
===========================================================================
関数一覧
===========================================================================
■ グラフィックライブラリ(アセンブラ版)
アセンブリ言語で記述したグラフィックライブラリです。画面モード切り替えなど
は BIOS に頼っていますが、描点・描線・矩形塗りつぶしはオールアセンブラですの
で、高速です。
(定数)
#define DrawNORMAL (int)0 // 描画モード
#define DrawXOR (int)4
(変数)
char _egbwork[]; // BIOS のワークエリア
int _scrmod[2]; // 各ページの画面モード
int _nowscrmod; // 現在の書き込みページの画面モード
int _wrtpage; // 現在の書き込みページ
(関数)
void ginit (void);
// 初期化
void gscreen (int mode);
// 画面モードの設定
void gwrtpage (int page);
// 書き込みページの設定
void gdsploc (int x, int y);
// 表示位置の設定
void gscrzoom (int xrate, int yrate);
// 画面拡大率の設定
void gdsparea (int xsize, int ysize);
// 表示範囲の設定
void gpset (int x, int y, int col, int mode);
// 点を描く
int gpoint (int x,int y);
// 画面上の色を読む
void gline (int x1,int y1,int x2,int y2,int col,int mode);
// 直線を描く
void ghline (int x1, int x2, int y, int col, int mode);
// 水平直線を描く
void gvline (int x, int y1, int y2,int col, int mode);
// 垂直直線を描く
void gboxfill (int x1,int y1,int x2,int y2,int col,int mode);
// 矩形塗りつぶし(矩形の座標で指定)
void grboxfill (int x1,int y1,int xlen,int ylen,int col,int mode);
// 矩形塗りつぶし(矩形の大きさで指定)
void gboxline (int x1,int y1,int x2,int y2,int col,int mode);
// 矩形(線描) (矩形の座標で指定)
void grboxline (int x1,int y1,int xlen,int ylen,int col,int mode);
// 矩形(線描) (矩形の大きさで指定)
■ グラフィックライブラリ(C言語版)
これは、High C の EGB ライブラリをそのまま呼び出すだけの関数です。しかし、
High C のライブラリをそのまま使うよりは簡単に呼び出せます。
(変数)
char *EGB_work;
(関数)
void grp_init (void);
void grp_mode (int mode);
void grp_mode2 (int mode);
void grp_scrZoom (int xrate, int yrate);
void grp_cls (void);
void grp_dispPos (int x, int y);
int grp_getMode (void);
int grp_getWrtpage (void);
void grp_setWrtpage (int page);
void grp_pset (int x, int y, int col, int mode);
int grp_point (int x, int y);
void grp_line (int x1, int y1, int x2, int y2, int col, int mode);
void grp_boxline (int x1, int y1, int xlen, int ylen, int col, int mode);
void grp_boxfill (int x1, int y1, int xlen, int ylen, int col, int mode);
void grp_getblk (int x1, int y1, int xlen, int ylen, char *buf);
void grp_putblk (char *data, int x1, int y1);
void grp_copy (int sx1, int sy1, int sxlen, int sylen, int sp,
int dx1, int dy1, int dp, int mode );
void grp_setplt (int plt, int rgb); // bit23-16:赤 bit15-8:緑 bit7-0:青
int grp_getplt (int plt); // bit23-16:赤 bit15-8:緑 bit7-0:青
void grp_putstr (int x, int y, char *str, int col );
■ キーボード、マウス関連
(型)
typedef struct {
int x,y;
int dx,dy;
char btn1,btn2;
} MSDAT;
(定数)
#define OFF (char)0
#define ON (char)1
#define OFFON (char)2
#define ONOFF (char)3
(関数)
void key_init (void);
char key_get (void);
int key_chk (void);
char key_read (void);
void key_clrbuf (void);
void minit (void);
void mend (void);
void rdmos (MSDAT *msdat);
■ その他
(型)
typedef struct {
int year,mon,day, hour,min,sec;
} TIME;
(関数)
int extwildcard (char *wildcard, char *namebuf[], int maxnames);
// ワイルドカードの展開
void TIFFload (char *fname);
// 圧縮/非圧縮 TIFF (320*240,32K色) の読み込み
void TIFFsave (char *fname);
// 圧縮 TIFF (320*240,32K色) ファイルの作成
int getftime (char *fname, TIME *timebuf); // 成功すれば 0 を返す
// ファイルの作成時刻を調べる
void getnowtime (TIME *timebuf);
// 現在時刻を調べる